package enemies.factory;

import mapControl.GraphicsMapControl;
import elementos.Player;
import enemies.Enemy;
import enemies.factory.builders.EnemyBuilder;


/**
 * 
 * Clase que se encarga de construir y retornar nuevos enemigos
 * @author Sebastian Giulietti 69032 
 * @author Adrian Sanchez 64251
 */
public class Barracks {
	
	//Builder que determinar el tipo de enemigo que se agregara a la barraca
	private EnemyBuilder enemyBuilder;
	
	//Controlador del mapa
	private GraphicsMapControl mapControl;
	
	//Objeto que representa a bomberman
	private Player player;

	/**Contructor principal
	 * @param mapControl mapControl
	 * @param player player
	 */
	public Barracks(GraphicsMapControl mapControl, Player player) {
		this.mapControl = mapControl;
		this.player = player;
	}

	/**
	 *Crea un nuevo enemigo segun su fabrica 
	 */
	public void construct() {
		enemyBuilder.createNewEnemyProduct(mapControl, player);
		enemyBuilder.setName();
		enemyBuilder.buildModel();
		enemyBuilder.buildTexture();
		enemyBuilder.locate();
		enemyBuilder.asignarEstrategia();

	}

	/** Setea la fabrica de enemigos actual
	 * @param pb builder 
	 */
	public void setEnemyBuilder(EnemyBuilder pb) {
		enemyBuilder = pb;
	}

	 
	/** Recupera e inicia el hilo del enemigo
	 * @return enemigo
	 */
	public Enemy startAndGetEnemy() {
		return enemyBuilder.getEnemy();
	}

}
